<?php
    require_once('./file.func.php');
    header("Content-type:text/html; charset=utf-8");
    /**
     * 遍历目录
     * @param string $path
     * @return array
     */
    function readDirectory($path,$path2){
        $handle = opendir($path);
        $arr = array('file'=>array(),'dir'=>array());
        while (($item = readdir($handle))!==false){
            if($item != "."&&$item != ".."){
                if(is_file($path."/".$item)){
                    $item = mb_convert_encoding($item, "UTF-8","GBK");
                    $arr["file"][] = $item;
                }
                else if(is_dir($path."/".$item)){
                    $item = mb_convert_encoding($item, "UTF-8","GBK");
                    $arr["dir"][]=$item;
                }
            }
        }
        return $arr;
        closedir($handle);
    }

    /**
     * 得到文件夹大小
     * @param  string $path 目录路径
     * @return int          文件夹总大小
     */
    $sum = 0;
    function dirSize($path){        
        global $sum;
        $handle = opendir($path);
        while (($item = readdir($handle))!==false) {
            if($item!='.'&&$item!='..'){
                if(is_file($path.'/'.$item)){
                    $sum += filesize($path.'/'.$item);
                }
                else if(is_dir($path.'/'.$item)){
                    dirSize($path.'/'.$item);
                }
            }
        }
        closedir($handle);
        return $sum;
    }

    /**
     * 创建文件夹
     * @param  string $dirname 创建的文件夹名
     * @return string          提示信息
     */
    function createFolder($dirname){
        //检测文件夹名合法性
        $stack = explode('/',$dirname);
        $basename = array_pop($stack);
        $dirname = mb_convert_encoding($dirname, 'GBK');
        if(checkFilename($basename)){
            //当前目录下是否存在同名文件夹
            if(!file_exists($dirname)){
                if(mkdir($dirname,0777,true)){
                    $mes = '创建文件夹成功';
                }
                else{
                    $mes = '创建文件夹失败';
                }
            }
            else{
                $mes = '存在同名文件夹';
            }
        }
        else{
            $mes = '文件夹名非法';
        }
        return $mes;
    }

    /**
     * 重命名文件夹
     * @param  string $oldname 原文件名
     * @param  string $newname 新文件名
     * @return string          提示信息
     */
    function renameFolder($oldname,$newname){
        //检测文件夹名是否合法
        $basename = basename($newname);
        $newname = mb_convert_encoding($newname,'GBK');
        $oldname = mb_convert_encoding($oldname,'GBK');
        if(checkFilename($basename)){
            //检测当前目录下是否有同名文件夹
            if(!file_exists($newname)){
                if(rename($oldname,$newname)){
                    $mes = '重命名成功';
                }
                else{
                    $mes = '重命名失败';
                }
            }
            else{
                $mes = '存在同名文件夹';
            }
        }
        else{
            $mes = '非法文件夹名称';
        }
        return $mes;

    }

    /**
     * 复制文件夹
     * @param  string $src 源文件夹
     * @param  string $dst 目标文件夹
     * @return string      提示信息
     */
    function copyFolder($src,$dst){
        $dst1 = mb_convert_encoding($dst, 'GBK');
        $src1 = mb_convert_encoding($src,'GBK');
        if(!file_exists($dst1)){
            mkdir($dst1,0777,true);
        }
        $handle = opendir($src1);
        while (($item = readdir($handle))!==false){
            if($item !='.'&&$item!='..'){
                if(is_file($src1.'/'.$item)){
                    copy($src1.'/'.$item,$dst1.'/'.$item);
                }
                if(is_dir($src1.'/'.$item)){
                    $item = mb_convert_encoding($item, "UTF-8","GBK");
                    copyFolder($src.'/'.$item,$dst.'/'.$item);
                }
            }
        }
        closedir($handle);
        return '复制成功';
    }

    /**
     * 剪切文件夹
     * @param  string $src 源文件夹
     * @param  string $dst 目标文件夹
     * @return string      提示信息
     */
    function cutFolder($src,$dst){
        $dst1 = mb_convert_encoding($dst, 'GBK');
        $src1 = mb_convert_encoding($src,'GBK');
        if(file_exists($dst1)){
            if(is_dir($dst1)){
                $stack = explode('/',$src);
                $basename = array_pop($stack);
                $dst1 = mb_convert_encoding($dst.'/'.$basename,'GBK');
                if(!file_exists($dst1)){
                    if(rename($src1,$dst1)){
                        $mes = '剪切成功';
                    }
                    else{
                        $mes = '剪切失败';
                    }
                }
                else{
                    $mes = '存在同名文件夹';
                }
            }
            else{
                $mes = '不是一个文件夹';
            }
        }
        else{
            $mes = '目标文件夹不存在';
        }
        return $mes;
    }

    /**
     * 删除文件夹
     * @param  string $path 源文件夹
     * @return string       提示信息
     */
    function delFolder($path){
        $path2 = mb_convert_encoding($path,'GBK');
        $handle = opendir($path2);
        while (($item=readdir($handle))!==false){
            if($item!='.'&&$item!='..'){
                if(is_file($path2.'/'.$item)){
                    unlink($path2.'/'.$item);
                }
                if(is_dir($path2.'/'.$item)){
                    $item = mb_convert_encoding($item, "UTF-8","GBK");
                    delFolder($path.'/'.$item);
                }
            }
        }
        closedir($handle);
        rmdir($path2);
        return '文件夹删除成功';
    }

?>

